package com.clarence.dada.modular.system.config.controller;

import com.clarence.dada.core.base.PageResult;
import com.clarence.dada.core.base.Result;
import com.clarence.dada.modular.system.config.entity.req.SysConfigReq;
import com.clarence.dada.modular.system.config.entity.resp.SysConfigResp;
import com.clarence.dada.modular.system.config.service.SysConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 参数配置控制器
 *
 * @author GD
 * @since 2020/4/13 22:46
 */
@RestController
@RequestMapping("/system/sysConfig/")
@Tag(name = "参数配置", description = "参数配置控制器Controller")
public class SysConfigController {

    @Resource
    private SysConfigService sysConfigService;

    /**
     * 添加系统参数配置
     *
     * @author GD
     * @since 2020/4/14 11:11
     */
    @Operation(summary = "系统参数配置_新增", description = "新增系统参数配置")
    @PostMapping("configAdd")
    public Result<Void> configAdd(@RequestBody @Validated(SysConfigReq.add.class) SysConfigReq req) {
        sysConfigService.configAdd(req);
        return Result.SUCCESS;
    }

    /**
     * 编辑系统参数配置
     *
     * @author GD
     * @since 2020/4/14 11:11
     */
    @Operation(summary = "系统参数配置_编辑", description = "编辑系统参数配置")
    @PostMapping("configEdit")
    public Result<Void> configEdit(@RequestBody @Validated(SysConfigReq.edit.class) SysConfigReq req) {
        sysConfigService.configEdit(req);
        return Result.SUCCESS;
    }

    /**
     * 查看系统参数配置
     *
     * @author GD
     * @since 2020/4/14 11:12
     */
    @Operation(summary = "系统参数配置_查看", description = "查看系统参数配置")
    @GetMapping("configDetail")
    public Result<SysConfigResp> configDetail(@Validated(SysConfigReq.detail.class) SysConfigReq req) {
        return new Result<>(sysConfigService.configDetail(req));
    }

    /**
     * 删除系统参数配置
     *
     * @author GD
     * @since 2020/4/14 11:11
     */
    @Operation(summary = "系统参数配置_删除", description = "删除系统参数配置")
    @PostMapping("configDelete")
    public Result<Void> configDelete(@RequestBody @Validated(SysConfigReq.delete.class) SysConfigReq req) {
        sysConfigService.configDelete(req);
        return Result.SUCCESS;
    }

    /**
     * 分页查询配置列表
     *
     * @author GD
     * @since 2020/4/14 11:10
     */
    @Operation(summary = "系统参数配置_列表（分页）", description = "分页查询配置列表")
    @GetMapping("configPage")
    public Result<PageResult<SysConfigResp>> configPage(SysConfigReq req) {
        return new Result<>(sysConfigService.configPage(req));
    }

//    /**
//     * 系统参数配置列表
//     *
//     * @author GD
//     * @since 2020/4/14 11:10
//     */
//    @Operation(summary = "系统参数配置_列表", description = "系统参数配置列表")
//    @GetMapping("configList")
//    public Result<List<SysConfigEntity>> list(SysConfigReq req) {
//        return new Result<>(sysConfigService.findList(req));
//    }

//    /**
//     * 获取系统配置是否初始化的标志
//     *
//     * @author GD
//     * @since 2021/7/8 17:20
//     */
//    @GetResource(name = "获取系统配置是否初始化的标志", path = "/sysConfig/getInitConfigFlag", requiredPermission = false)
//    public Result<Boolean> getInitConfigFlag() {
//        return new Result<>(sysConfigService.getInitConfigFlag());
//    }
//
//    /**
//     * 初始化系统配置参数，用在系统第一次登录时
//     *
//     * @author GD
//     * @since 2021/7/8 16:36
//     */
//    @PostResource(name = "初始化系统配置参数，用在系统第一次登录时", path = "/sysConfig/initConfig", requiredPermission = false)
//    public Result<Void> initConfig(@RequestBody ConfigInitRequest configInitRequest) {
//        sysConfigService.initConfig(configInitRequest);
//        return Result.SUCCESS;
//    }
//
//    /**
//     * 获取需要初始化的配置列表
//     *
//     * @author GD
//     * @since 2021/7/8 16:36
//     */
//    @GetResource(name = "获取需要初始化的配置列表", path = "/sysConfig/getInitConfigList")
//    public ResponseData<InitConfigResponse> getInitConfigList() {
//        return new SuccessResponseData<>(sysConfigService.getInitConfigs());
//    }
//
//    /**
//     * 获取后端服务部署的地址
//     *
//     * @author GD
//     * @since 2021/7/8 16:36
//     */
//    @GetResource(name = "获取后端服务部署的地址", path = "/sysConfig/getBackendDeployUrl", requiredLogin = false, requiredPermission = false)
//    public ResponseData<String> getBackendDeployUrl() {
//        String serverDeployHost = sysConfigService.getServerDeployHost();
//        return new SuccessResponseData<>(serverDeployHost);
//    }

}


